package jp.seraph.jsade.perceptor;

import java.util.HashMap;
import java.util.Map;

import jp.seraph.jsade.message.MessageUtil;

public class SeeObjectType {
    private SeeObjectType(String aTypeName){
        mTypeName = aTypeName;
        OBJECT_MAP.put(mTypeName, this);
    }

    private String mTypeName;
    private static Map<String, SeeObjectType> OBJECT_MAP = new HashMap<String, SeeObjectType>();

    public static SeeObjectType getObjectType(String aTypeName){
        SeeObjectType tResult = OBJECT_MAP.get(aTypeName);
        if(tResult == null)
            throw new IllegalArgumentException(MessageUtil.enumValueNotFound("SeeObjectType", aTypeName));

        return tResult;
    }

    public String getTypeName(){
        return mTypeName;
    }

    /**
     * ボール
     */
    public static SeeObjectType BALL = new SeeObjectType("B");

    /**
     * プレイヤー
     */
    public static SeeObjectType PLAYER = new SeeObjectType("P");

    /**
     * ある位置からみた場合の
     * 左奥のゴールポスト
     */
    public static SeeObjectType LEFT_GOAL_1 = new SeeObjectType("G1L");

    /**
     * ある位置からみた場合の
     * 左手前のゴールポスト
     */
    public static SeeObjectType LEFT_GOAL_2 = new SeeObjectType("G2L");

    /**
     * ある位置からみた場合の
     * 右奥のゴールポスト
     */
    public static SeeObjectType RIGHT_GOAL_1 = new SeeObjectType("G1R");

    /**
     * ある位置からみた場合の
     * 右手前のゴールポスト
     */
    public static SeeObjectType RIGHT_GOAL_2 = new SeeObjectType("G2R");

    /**
     * ある位置からみた場合の
     * 左奥のコーナー
     */
    public static SeeObjectType LEFT_FIELD_1 = new SeeObjectType("F1L");

    /**
     * ある位置からみた場合の
     * 左手前のコーナー
     */
    public static SeeObjectType LEFT_FIELD_2 = new SeeObjectType("F2L");

    /**
     * ある位置からみた場合の
     * 右奥のコーナー
     */
    public static SeeObjectType RIGHT_FIELD_1 = new SeeObjectType("F1R");

    /**
     * ある位置からみた場合の
     * 右奥のコーナー
     */
    public static SeeObjectType RIGHT_FIELD_2 = new SeeObjectType("F2R");
}
